package org.ipower.examsystem.action;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.ipower.examsystem.domain.Membership;
import org.ipower.examsystem.domain.MembershipCatalog;
import org.ipower.examsystem.service.MembershipService;
import org.ipower.platform.domain.Pager;
import org.ipower.platform.domain.QueryCondition;

/**
 * 会员管理列表。
 * @author jeasonyoung
 */
public class MembershipAction  extends ModuleBaseAction<MembershipService>{
    private static final long serialVersionUID = 1L;
    private Pager<Membership> dataSource;
    private String memberID,memberSign,memberName,memberCatalogs;
    private int memberStatus = 0;
    /**
     * 设置会员ID。
     * @param memberID 会员ID。
     * */
    public void setMemberID(String memberID) {
        this.memberID = memberID;
    }
    /**
     * 设置会员帐号。
     * @param memberSign 会员账号。
     * */
    public void setMemberSign(String memberSign) {
        this.memberSign = memberSign;
    }
    /**
     * 设置会员名称。
     * @param memberName 会员名称。
     * */
    public void setMemberName(String memberName) {
        this.memberName = memberName;
    }
    /**
     * 设置会员状态。
     * @param memberStatus 会员状态。
     * */
    public void setMemberStatus(int memberStatus) {
        this.memberStatus = memberStatus;
    }
    /**
     * 设置会员科目。
     * @param memberCatalogs 科目数据。
     * */
    public void setMemberCatalogs(String memberCatalogs) {
        this.memberCatalogs = memberCatalogs;
    }
    /**
     * 获取列表数据。
     * @return 列表数据。
     * */
    public Pager<Membership> getDataSource() {
        return dataSource;
    }
     /**
    * 获取列表数据。
    * @return 执行结果。
    * */
    public String list(){
        List<QueryCondition> entities = new  ArrayList<QueryCondition>();
        if(this.memberName != null && !this.memberName.isEmpty()){
            entities.add(new QueryCondition("MemberName", this.memberName,QueryCondition.MODE_ANY));
            entities.add(new QueryCondition("MemberSign", this.memberName,QueryCondition.MODE_ANY));
        }
        this.dataSource =  this.getService().findAll(this.getAscProperty(), this.isAsc(), this.getStart(), this.getLimit(),entities);
        return SUCCESS;
    }
    /**
     * 更新数据。
     * @return 执行结果。
     * */
    public String update(){
        if(this.memberID != null && !this.memberID.isEmpty() && this.memberName != null && !this.memberName.isEmpty()){
            Membership data = new Membership();
            data.setMemberID(this.memberID);
            data.setMemberName(this.memberName);
            data.setMemberSign(this.memberSign);
            data.setMemberStatus(this.memberStatus);
            
            List<MembershipCatalog> list = null;
            if(this.memberCatalogs != null && !this.memberCatalogs.isEmpty()){
               String[] catalogs = this.memberCatalogs.split(";");
               if(catalogs != null && catalogs.length > 0){
                   list = new ArrayList<MembershipCatalog>();
                   SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
                   for(String c: catalogs){
                       String[] arr = c.split(",");
                       if(arr != null && arr.length == 3){
                            MembershipCatalog mc = new MembershipCatalog();
                            mc.setMemberID(data.getMemberID());
                            mc.setCatalogID(arr[0]);
                            try{
                                mc.setCreateTime(formatter.parse(arr[1]));
                            }catch(ParseException pe){
                                mc.setCreateTime(new Date());
                            }
                            mc.setCycle(Integer.parseInt(arr[2]));
                            list.add(mc);
                       }
                   }
               }
            }
            
            this.getService().update(data, list);
        }
        return SUCCESS;
    }
    /**
     * 删除数据。
     * @return 执行结果。
     * */
    public String delete(){
        if(this.memberID != null && !this.memberID.isEmpty()){
            this.getService().delete(this.memberID);
        }
        return SUCCESS;
    }
   /**
    * 默认执行。
    * @return 执行结果。
    * */
    @Override
    public String execute() throws Exception{
        return SUCCESS;
    }
}
